package br.com.bmb.monitorimoveis.persistencia.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;

import br.com.bmb.monitorimoveis.entidade.Anuncio;
import br.com.bmb.monitorimoveis.entidade.Bairro;
import br.com.bmb.monitorimoveis.entidade.Cidade;
import br.com.bmb.monitorimoveis.persistencia.IAnuncioDAO;

@Service
public class AnuncioDAO extends AbstractDAO<Anuncio, Long> implements IAnuncioDAO {	

	public Anuncio getByCodigo(int codigo) {
		Query query = getSession().createQuery(" from Anuncio where codigo = :codigo");
		
		query.setParameter("codigo", codigo);
		
		return (Anuncio) query.list().get(0);
	}


	@SuppressWarnings("unchecked")
	public List<Anuncio> listByCidade(Cidade cidade) {
		
		Criteria criteria = getSession().createCriteria(Anuncio.class);
		criteria.add(Restrictions.eq("bairro.cidade", cidade));
		
		return criteria.list();
	}

	@SuppressWarnings("unchecked")
	public List<Anuncio> listByBairro(Bairro bairro) {

		Criteria criteria = getSession().createCriteria(Anuncio.class);		
		criteria.add(Restrictions.eq("bairro", bairro));
		
		return criteria.list();
	}


	@Override
	protected Class<?> getObjectType() {
		return Anuncio.class;
	}
	
	
}
